//package com.fundodoo.sfe.admin.controller;
//
//import java.util.ArrayList;
//import java.util.List;
//import java.util.Locale;
//import java.util.Map;
//
//import org.apache.commons.lang3.StringUtils;
//import org.apache.shiro.authz.annotation.RequiresPermissions;
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.context.MessageSource;
//import org.springframework.context.i18n.LocaleContextHolder;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.GetMapping;
//import org.springframework.web.bind.annotation.RequestMapping;
//import org.springframework.web.bind.annotation.ResponseBody;
//
//import com.fundodoo.sfe.admin.dao.MenuRepository;
//import com.fundodoo.sfe.common.annotation.Log;
//import com.fundodoo.sfe.common.controller.BaseController;
//import com.fundodoo.sfe.common.po.PermissionInfo;
//import com.fundodoo.sfe.common.po.ResponseBo;
//import com.fundodoo.sfe.common.po.Tree;
//import com.fundodoo.sfe.common.utils.FileUtils;
//import com.fundodoo.sfe.domain.Menu;
//
//@Controller
//public class MenuController extends BaseController {
//
//    private Logger logger = LoggerFactory.getLogger(this.getClass());
//
//    @Autowired
//    private MenuRepository menuRepository;
//    @Autowired
//    private MessageSource messageSource;
////    private Locale locale = LocaleContextHolder.getLocale();
//    
//    @Log("访问菜单管理页面")
//    @RequestMapping("menu")
//    @RequiresPermissions("menu:list")
//    public String index() {
//        return "system/menu/menu";
//    }
//
//    @Log("根据userName获取菜单")
//    @RequestMapping("menu/menu")
//    @ResponseBody
//    public ResponseBo getMenu(String userName) {
//    	Locale locale = LocaleContextHolder.getLocale();
//        try {
//            List<Menu> menus = this.menuService.findUserMenus(userName);
//            return ResponseBo.ok(menus);
//        } catch (Exception e) {
//            logger.error("获取菜单失败", e);
//            return ResponseBo.error(messageSource.getMessage("menu.get.fail", null, locale));
//        }
//    }
//
//    @Log("根据menuId获取菜单")
//    @RequestMapping("menu/getMenu")
//    @ResponseBody
//    public ResponseBo getMenu(Long menuId) {
//    	Locale locale = LocaleContextHolder.getLocale();
//        try {
//            Menu menu = this.menuService.findById(menuId);
//            return ResponseBo.ok(menu);
//        } catch (Exception e) {
//            logger.error("获取菜单信息失败", e);
//            return ResponseBo.error(messageSource.getMessage("menu.info.get.fail", null, locale));
//        }
//    }
//
//    @Log("获取菜单列表")
//    @RequestMapping("menu/menuButtonTree")
//    @ResponseBody
//    public ResponseBo getMenuButtonTree() {
//    	Locale locale = LocaleContextHolder.getLocale();
//        try {
//        	PermissionInfo permissionInfo = getCurrentUserPermissionInfo();
////            Tree<Menu> tree = this.menuService.getMenuButtonTree(permissionInfo);
//        	Tree<Menu> tree = this.menuService.getUserMenu(null, "", permissionInfo);
//            return ResponseBo.ok(tree);
//        } catch (Exception e) {
//            logger.error("获取菜单列表失败", e);
//            return ResponseBo.error(messageSource.getMessage("menu.list.get.fail", null, locale));
//        }
//    }
//
//    @Log("获取菜单树")
//    @RequestMapping("menu/tree")
//    @ResponseBody
//    public ResponseBo getMenuTree() {
//    	Locale locale = LocaleContextHolder.getLocale();
//        try {
//            Tree<Menu> tree = this.menuService.getMenuTree();
//            return ResponseBo.ok(tree);
//        } catch (Exception e) {
//            logger.error("获取菜单树失败", e);
//            return ResponseBo.error(messageSource.getMessage("menu.tree.get.fail", null, locale));
//        }
//    }
//
//    @Log("获取用户菜单")
//    @RequestMapping("menu/getUserMenu")
//    @ResponseBody
//    public ResponseBo getUserMenu(String userName) {
//    	Locale locale = LocaleContextHolder.getLocale();
//        try {
//        	PermissionInfo permissionInfo = getCurrentUserPermissionInfo();
//            Tree<Menu> tree = this.menuService.getUserMenu(userName,"0",permissionInfo);
//            return ResponseBo.ok(tree);
//        } catch (Exception e) {
//            logger.error("获取用户菜单失败", e);
//            return ResponseBo.error(messageSource.getMessage("menu.user.get.fail", null, locale));
//        }
//    }
//
//    @Log("获取菜单集合")
//    @RequestMapping("menu/list")
//    @RequiresPermissions("menu:list")
//    @ResponseBody
//    public List<Menu> menuList(Menu menu) {
//        try {
//            return this.menuService.findAllMenus(menu);
//        } catch (Exception e) {
//            logger.error("获取菜单集合失败", e);
//            return new ArrayList<>();
//        }
//    }
//
//    @Log("导出菜单excel")
//    @RequestMapping("menu/excel")
//    @ResponseBody
//    public ResponseBo menuExcel(Menu menu) {
//    	Locale locale = LocaleContextHolder.getLocale();
//        try {
//            List<Menu> list = this.menuService.findAllMenus(menu);
//            return FileUtils.createExcelByPOIKit(messageSource.getMessage("menu.table", null, locale), list, Menu.class);
//        } catch (Exception e) {
//            logger.error("带出菜单列表Excel失败", e);
//            return ResponseBo.error(messageSource.getMessage("export.fail", null, locale));
//        }
//    }
//
//    @Log("导出菜单csv")
//    @RequestMapping("menu/csv")
//    @ResponseBody
//    public ResponseBo menuCsv(Menu menu) {
//    	Locale locale = LocaleContextHolder.getLocale();
//        try {
//            List<Menu> list = this.menuService.findAllMenus(menu);
//            return FileUtils.createCsv(messageSource.getMessage("menu.table", null, locale), list, Menu.class);
//        } catch (Exception e) {
//            logger.error("导出菜单列表Csv失败", e);
//            return ResponseBo.error(messageSource.getMessage("export.fail", null, locale));
//        }
//    }
//
//    @RequestMapping("menu/checkMenuName")
//    @ResponseBody
//    public boolean checkMenuName(String menuName, String type, String oldMenuName) {
//        if (StringUtils.isNotBlank(oldMenuName) && menuName.equalsIgnoreCase(oldMenuName)) {
//            return true;
//        }
//        Menu result = this.menuService.findByNameAndType(menuName, type);
//        return result == null;
//    }
//
//    @Log("新增菜单/按钮")
////    @RequiresPermissions("menu:add")
//    @RequestMapping("menu/add")
//    @ResponseBody
//    public ResponseBo addMenu(Menu menu) {
//    	Locale locale = LocaleContextHolder.getLocale();
//        String name;
//        if (Menu.TYPE_MENU.equals(menu.getType())) {
//            name = "菜单";
//        } else {
//            name = "按钮";
//        }
//        try {
//            this.menuService.addMenu(menu);
//            return ResponseBo.ok(name + messageSource.getMessage("add.success", null, locale));
//        } catch (Exception e) {
//            logger.error("新增{}失败", name, e);
//            return ResponseBo.error(name + messageSource.getMessage("add.fail", null, locale));
//        }
//    }
//
//    @Log("删除菜单")
////    @RequiresPermissions("menu:delete")
//    @RequestMapping("menu/delete")
//    @ResponseBody
//    public ResponseBo deleteMenus(String ids) {
//    	Locale locale = LocaleContextHolder.getLocale();
//        try {
//            this.menuService.deleteMeuns(ids);
//            return ResponseBo.ok(messageSource.getMessage("delete.success", null, locale));
//        } catch (Exception e) {
//            logger.error("获取菜单失败", e);
//            return ResponseBo.error(messageSource.getMessage("delete.fail", null, locale));
//        }
//    }
//
//    @Log("修改菜单/按钮")
////    @RequiresPermissions("menu:update")
//    @RequestMapping("menu/update")
//    @ResponseBody
//    public ResponseBo updateMenu(Menu menu) {
//    	Locale locale = LocaleContextHolder.getLocale();
//        String name;
//        if (Menu.TYPE_MENU.equals(menu.getType()))
//            name = "菜单";
//        else
//            name = "按钮";
//        try {
//            this.menuService.updateMenu(menu);
//            return ResponseBo.ok(name + messageSource.getMessage("update.success", null, locale));
//        } catch (Exception e) {
//            logger.error("修改{}失败", name, e);
//            return ResponseBo.error(name + messageSource.getMessage("update.fail", null, locale));
//        }
//    }
//
//
//    @Log("获取系统所有URL")
//    @GetMapping("menu/urlList")
//    @ResponseBody
//    public List<Map<String, String>> getAllUrl() {
//        return this.menuService.getAllUrl("1");
//    }
//
//}
